//兼具大小写的最好英文字母
/*给你一个由英文字母组成的字符串 s ，请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母，则返回一个空字符串。

最好 英文字母的大写和小写形式必须 都 在 s 中出现。

英文字母 b 比另一个英文字母 a 更好 的前提是：英文字母表中，b 在 a 之 后 出现。
*/
class Solution {
public:
    string greatestLetter(string s) {
        int hash[58] = {0};
        for (auto& c : s) {
            hash[c - 'A']++;
        }

        for (int i = 25; i >= 0; i--) {
            if (hash[i] && hash[i + 32]) {
               // cout << i;
                return string(1, 'A' + i);
            }
        }
        return "";
    }
};


//最小化字符串长度
/*给你一个下标从 0 开始的字符串 s ，重复执行下述操作 任意 次：

在字符串中选出一个下标 i ，并使 c 为字符串下标 i 处的字符。并在 i 左侧（如果有）和 右侧（如果有）各 删除 一个距离 i 最近 的字符 c 。
请你通过执行上述操作任意次，使 s 的长度 最小化 。

返回一个表示 最小化 字符串的长度的整数。
*/
class Solution {
public:
    int minimizedStringLength(string s) {
        bool hash[26] = {0};
        int count = 0;
        for (auto& c : s) {
            if (hash[c - 'a'] == false) {
                hash[c - 'a'] = true;
                count++;
            }
        }
        return count;
    }
};